﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using GestorDeFlotas.Core;
using GestorDeFlotasDesktop.GD1C2012DataSetTableAdapters;

namespace GestorDeFlotasDesktop.AsignacionChoferAuto
{
    public partial class AsignacionChoferAuto : Form
    {
        public AsignacionChoferAuto()
        {
            InitializeComponent();
            this.textBox_auto.Enabled = false;
            this.textBox_chofer.Enabled = false;
            this.textBox_turno.Enabled = false;
        }

        private Auto MyAuto { get; set; }
        private Chofer MyChofer { get; set; }
        private Turno MyTurno { get; set; }

        private void boton_seleccionar_chofer_Click(object sender, EventArgs e)
        {
            AbmChofer.AbmChofer abmChofer = new AbmChofer.AbmChofer(ModoAbm.Consulta);
            if (abmChofer.ShowDialog() == DialogResult.OK && abmChofer.MyChofer != null)
            {
                this.MyChofer = abmChofer.MyChofer.Cargar();
                this.textBox_chofer.Text = string.Format("{0} {1}", this.MyChofer.Nombre, this.MyChofer.Apellido);
            }
        }

        private void boton_seleccionar_turno_Click(object sender, EventArgs e)
        {
            AbmTurno.AbmTurno abmTurno = new AbmTurno.AbmTurno(ModoAbm.Consulta);
            if (abmTurno.ShowDialog() == DialogResult.OK && abmTurno.MyTurno != null)
            {
                this.MyTurno = abmTurno.MyTurno.Cargar();
                this.textBox_turno.Text = this.MyTurno.Descripcion;
            }
        }

        private void boton_seleccionar_auto_Click(object sender, EventArgs e)
        {
            AbmAuto.AbmAuto abmAuto = new AbmAuto.AbmAuto(ModoAbm.Consulta);
            if (abmAuto.ShowDialog() == DialogResult.OK && abmAuto.MyAuto != null) //Ver como se hace aca
                //tengo entendido que esto lo hacen para comprobar que haya solo una fila.
            {
                this.MyAuto = abmAuto.MyAuto.Cargar();
                this.textBox_auto.Text = string.Format("{0} {1} ", this.MyAuto.marca, this.MyAuto.patente);
            }
        }

        private void boton_asignar_chofer_auto_Click(object sender, EventArgs e)
        {

            if (string.IsNullOrEmpty(textBox_auto.Text) || string.IsNullOrEmpty(textBox_chofer.Text) || string.IsNullOrEmpty(textBox_turno.Text))
            {
                MessageBox.Show("Agregue un Auto, Chofer, Turno y Fecha para continuar", "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                return;
            }
            else
            {

                TL_ChoferesPorAutoYTurnoTableAdapter tlAdapter = new TL_ChoferesPorAutoYTurnoTableAdapter();

                if (tlAdapter.ScalarQueryEstaElChoferHabilitado(MyChofer.Id) == 1)
                {
                    if ((int)tlAdapter.ScalarQueryVerificacionDeValorUnico(MyAuto.codigoAuto, MyChofer.Id, MyTurno.Id, this.dateTimePicker1.Value) == 0)
                    {

                        if (MyTurno.Activo == true)
                        {
                            if ((int)tlAdapter.ScalarQueryValidarDistintosChoferesMismoAuto(MyAuto.codigoAuto, MyTurno.Id, this.dateTimePicker1.Value) < 1)
                            {

                                if ((int)tlAdapter.ScalarQueryVerificarMismoTurnoMismoChoferDistintoAuto(MyChofer.Id, MyTurno.Id, this.dateTimePicker1.Value) < 1)
                                {
                                    tlAdapter.InsertEntryChoferAuto(MyAuto.codigoAuto, MyChofer.Id, MyTurno.Id, this.dateTimePicker1.Value);
                                    MessageBox.Show("La Asignacion fue Exitosa.");                                    
                                }
                                else
                                {
                                    MessageBox.Show("Ese chofer  ya tiene asignado ese turno en esa fecha");
                                }
                            }

                            else
                            {
                                MessageBox.Show("Ese auto ya tiene asignado ese turno en esa fecha");
                            }

                        }
                        else
                        {
                            MessageBox.Show(string.Format("No se puede hacer una asignacion sobre un Turno desactivado, por favor seleccione uno habilitado."));
                        }
                    }
                    else
                    {
                        MessageBox.Show(string.Format("La combinacion Chofer: {0} Auto: {1} Turno: {2} Dia: {3} ya esta en uso y no puede repetirse, Por favor seleccione Otra combinacion.", MyChofer.Nombre, MyAuto.marca + MyAuto.patente, MyTurno.Descripcion, this.dateTimePicker1.Value));
                    }
                }
                else
                {
                    MessageBox.Show(string.Format("El Chofer {0} {1} de ID :{2} no esta habilitado y no se podrá registrar la Asignación, Por favor seleccione un Chofer Habilitado.", MyChofer.Apellido, MyChofer.Nombre, MyChofer.Id, Environment.NewLine));

                }
            }
        }
        
    }
}
